package cn.xclink.wechat.service.core;

import java.io.IOException;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Service;

import cn.xclink.wechat.utils.MessageUtil;
import cn.xclink.wechat.utils.TextMessage;
/**
 * @author ljp
 * 核心服务类
 */
@Service("coreService")
public class CoreServiceImpl implements CoreService{

	
	/**
	 * 处理微信发来的请求（包括事件的推送）
	 */
	public String processRequest(HttpServletRequest request) {
		
		
		String respMessage = "异常消息";

		try {
			//xml请求解析
			Map<String ,String>  requestMap = MessageUtil.xmlToMap(request);
			// 发送方帐号（open_id）
            String fromUserName = requestMap.get("FromUserName");
            // 公众帐号
            String toUserName = requestMap.get("ToUserName");
            // 消息类型
            String msgType = requestMap.get("MsgType");
            // 消息内容
            String content = requestMap.get("Content");
            // 文本消息
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
                //这里根据关键字执行相应的逻辑，只有你想不到的，没有做不到的
             
                //自动回复
                TextMessage text = new TextMessage();
                String mes="我走过山时，山不说话， 我路过海时，海不回答， 小毛驴滴滴答答，倚天剑伴我走天涯。 大家都说我因为爱着杨过大侠，才在峨嵋山上出了家， 其实我只是爱上了峨嵋山上的云和霞， 像极了十六岁那年的烟花”——风陵渡口初相遇，一见杨过误终身，只恨我生君已老，...";
                if(content.equals("sb")){
                	mes="你是个好人";
                }
                if(content.equals("呵呵")){
                	mes="你很不错";
                }
                text.setContent(mes);
                text.setToUserName(fromUserName);
                text.setFromUserName(toUserName);
                text.setCreateTime(new Date().getTime() + "");
                text.setMsgType(msgType);
                respMessage = MessageUtil.textMessageToXml(text);
             
            } else if(msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)){
            	String eventType = requestMap.get("Event");// 事件类型
            	// 订阅
                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
                    TextMessage text = new TextMessage();
                    text.setContent("你终于回来了 骑猪西去");
                    text.setToUserName(fromUserName);
                    text.setFromUserName(toUserName);
                    text.setCreateTime(new Date().getTime() + "");
                    text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
                    respMessage = MessageUtil.textMessageToXml(text);
                }else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {// 取消订阅
                	// 取消订阅后用户再收不到公众号发送的消息，因此不需要回复消息
                }else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
                	// 自定义菜单点击事件
                    String eventKey = requestMap.get("EventKey");// 事件KEY值，与创建自定义菜单时指定的KEY值对应
                    if (eventKey.equals("customer_telephone")) {
                        TextMessage text = new TextMessage();
                        text.setContent("0755-86671980");
                        text.setToUserName(fromUserName);
                        text.setFromUserName(toUserName);
                        text.setCreateTime(new Date().getTime() + "");
                        text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
                        respMessage = MessageUtil.textMessageToXml(text);
                    }
                }
            }
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 return respMessage;
		
		}
}
